package com.example.redislearn.example.relationship.service;

import com.example.redislearn.constant.RelationShipEnum;

import java.util.Set;

public interface RelationshipService {

    /**
     * 关注取关
     *
     * @param userId      用户id
     * @param followingId 被关注的用户id
     * @return 是否成功
     */
    boolean focusOnAndTakeOff(String userId, String followingId);

    /**
     * 判断两个用户的关系
     *
     * @param aUserId 用户id
     * @param bUserId 用户id
     * @return 关系
     */
    RelationShipEnum checkRelationShip(String aUserId, String bUserId);

    /**
     * 关注列表
     *
     * @param userId 用户id
     * @return 关注用户
     */
    Set<String> getWatchSet(String userId);

    /**
     * 粉丝列表
     *
     * @param userId 用户id
     * @return 粉丝用户
     */
    Set<String> getFansSet(String userId);

    /**
     * 共同关注
     *
     * @param aUserId 用户id
     * @param bUserId 用户id
     * @return 用户
     */
    Set<String> getIntersectionWatchSet(String aUserId, String bUserId);

    /**
     * 共同粉丝
     *
     * @param aUserId 用户id
     * @param bUserId 用户id
     * @return 粉丝
     */
    Set<String> getIntersectionFansSet(String aUserId, String bUserId);

    /**
     * 推荐关注
     *
     * @param userId 用户id
     * @return 用户
     */
    Set<String> recommendWatchSet(String userId);

    /**
     * 随机推荐关注
     *
     * @param userId 用户id
     * @param num 推荐数量
     * @return 用户
     */
    Set<String> randomRecommendWatchSet(String userId, Integer num);

}
